const { execSync } = require('child_process')
const branchName = execSyncWithOutput('git symbolic-ref --short -q HEAD').trim()

class ModuleAutoBuildOption {
  // 是否基于分支构建的
  isBranch = false
  // 是否基于当前分支某个构建的
  isCommit = false
  
  branch = ''
  commit = ''
}

class ModuleBuildOption {
  // 是否手动选择模块打包
  isModuleManualBuild = false
  // 是否自动分析依赖模块打包
  isModuleAutoBuild = false
  
  // 手动选择构建模块列表
  modulesManualKeys = []
  // 自动打包配置
  moduleAutoBuildOption = new ModuleAutoBuildOption()
}

class BuildOption {
  // 是否开启esbuild打包
  isUseEsBuild = false
  // 是否全量打包
  isFullBuild = false
  // 是否按模块打包
  isModuleBuild = false
  // 是否为服务端构建
  isCloudBuild = false
  
  // 按模块打包配置
  moduleBuildOptions = new ModuleBuildOption()
  
  // 构建地址
  path = ''
  // 构建人
  userName = ''
  // 当前构建分支
  branch = branchName
}

function execSyncWithOutput(command) {
  try {
    return execSync(command, { encoding: 'utf8' })
  } catch (error) {
    console.log(error)
    return ''
  }
}

exports.ModuleAutoBuildOption = ModuleAutoBuildOption
exports.ModuleBuildOption = ModuleBuildOption

module.exports = BuildOption
